
package com.ccc.scala.base8_match

object Match09 {
  def main(args: Array[String]): Unit = {
    // 样例类
    // 样例类就是使用case关键字声明的类

    // 仍然是类，和普通类相比，只是其自动生成了伴生对象，
    //    并且伴生对象中自动提供了一些常用的方法，
    //    如apply、unapply、toString、equals、hashCode和copy

    // 样例类是为模式匹配而优化的类，因为其默认提供了unapply方法，
    //    因此，样例类可以直接使用模式匹配，而无需自己实现unapply方法。

    // 构造器中的每一个参数都成为val，除非它被显式地声明为var（不建议这样做）

    val user = User("CJ", 23)
    val str = user match {
      case User("CJ", 23) => "CJ"
      case _ => "other user"
    }
    println(str) // CJ

  }

  case class User(name: String, var age: Int)

}
